// 小明是一个JavaScript新手，他写了一个max()函数，返回两个数中较大的那个：

function max(a, b) {
    if (a > b) {
        return
        a;
    } else {
        return
        b;
    }

}
console.log(max(15, 20));


// 练习 定义一个计算圆面积的函数area_of_circle()，它有两个参数：

// r: 表示圆的半径； pi: 表示π的值，如果不传，则默认3.14
function area_of_circle(r, pi) {
    if (typeof r !== 'number') {
        throw ' it is not number'
    }
    var sum;
    if (pi === undefined) {
        pi = 3.14;
        sum = r * r * pi
    } else {

        sum = r * r * pi
    }


    return sum
}
// 测试:
if (area_of_circle(2) === 12.56 && area_of_circle(2, 3.1416) === 12.5664) {
    console.log('测试通过');
} else {
    console.log('测试失败');
}





function foo(x) {
    console.log('x = ' + x); // 10
    for (var i = 0; i < arguments.length; i++) {
        console.log('arg ' + i + ' = ' + arguments[i]); // 10, 20, 30
    }
}
foo(10, 20, 30);




function fo(v) {
    if (arguments.length === 0) {
        return 0;
    }

    var v = arguments[0]

    return console.log(v);
}
fo(10)
fo(-9)



// 实际上arguments最常用于判断传入参数的个数。你可能会看到这样的写法：

// foo(a[, b], c)
// 接收2~3个参数，b是可选参数，如果只传2个参数，b默认为null：
function foo(a, b, c) {
    if (arguments.length === 2) {
        // 实际拿到的参数是a和b，c为undefined
        c = b; // 把b赋给c
        b = null; // b变为默认值
    }
    // ...
}


// rest参数只能写在最后，前面用...标识，
// 从运行结果可知，传入的参数先绑定a、b，多余的参数以数组形式交给变量rest，所以，不再需要arguments我们就获取了全部参数。
function aa(a, b, c, ...rest) {

    console.log(a);
    console.log(b);
    console.log(c);
    console.log(rest);

}

aa(1, 2, 3, 4, 5, 6, 7, 8)